﻿namespace System
{
    /// <summary>
    /// 表示提供常用的正则表达式验证的扩展。
    /// </summary>
    public static class RegexExpressionExtensions
    {
        /// <summary>
        /// 判断当前字符串是否匹配 <see cref="Const.PATTERN_EMAIL"/> 表达式。
        /// </summary>
        /// <param name="value">输入的字符串。</param>
        /// <returns>如果成功匹配表达式，则为 <c>true</c>；否则为 <c>false</c>。</returns>
        public static bool IsMatchEmail(this string value) => value.IsMatch(Const.PATTERN_EMAIL);

        /// <summary>
        /// 判断当前字符串是否匹配 <see cref="Const.PATTERN_URL"/> 表达式。
        /// </summary>
        /// <param name="value">输入的字符串。</param>
        /// <returns>如果成功匹配表达式，则为 <c>true</c>；否则为 <c>false</c>。</returns>
        public static bool IsMatchUrl(this string value) => value.IsMatch(Const.PATTERN_URL);

        /// <summary>
        /// 判断当前字符串是否匹配 <see cref="Const.PATTERN_CHINESE"/> 表达式。
        /// </summary>
        /// <param name="value">输入的字符串。</param>
        /// <returns>如果成功匹配表达式，则为 <c>true</c>；否则为 <c>false</c>。</returns>
        public static bool IsMatchChinese(this string value) => value.IsMatch(Const.PATTERN_CHINESE);

        /// <summary>
        /// 判断当前字符串是否匹配 <see cref="Const.PATTERN_CHINA_MOBILE"/> 表达式。
        /// </summary>
        /// <param name="value">输入的字符串。</param>
        /// <returns>如果成功匹配表达式，则为 <c>true</c>；否则为 <c>false</c>。</returns>
        public static bool IsMatchChinaMobile(this string value) => value.IsMatch(Const.PATTERN_CHINA_MOBILE);

        /// <summary>
        /// 判断当前字符串是否匹配 <see cref="Const.PATTERN_CHINA_PHONE"/> 表达式。
        /// </summary>
        /// <param name="value">输入的字符串。</param>
        /// <returns>如果成功匹配表达式，则为 <c>true</c>；否则为 <c>false</c>。</returns>
        public static bool IsMatchChinaPhone(this string value) => value.IsMatch(Const.PATTERN_CHINA_PHONE);

        /// <summary>
        /// 判断当前字符串是否匹配 <see cref="Const.PATTERN_CHINA_POST_CODE"/> 表达式。
        /// </summary>
        /// <param name="value">输入的字符串。</param>
        /// <returns>如果成功匹配表达式，则为 <c>true</c>；否则为 <c>false</c>。</returns>
        public static bool IsMatchChinaPostCode(this string value) => value.IsMatch(Const.PATTERN_CHINA_POST_CODE);

        /// <summary>
        /// 判断当前字符串是否匹配 <see cref="Const.PATTERN_CHINESE_ID_NUMBER"/> 表达式。
        /// </summary>
        /// <param name="value">输入的字符串。</param>
        /// <returns>如果成功匹配表达式，则为 <c>true</c>；否则为 <c>false</c>。</returns>
        public static bool IsMatchChineseIdNumber(this string value) => value.IsMatch(Const.PATTERN_CHINESE_ID_NUMBER);
    }
}
